Keep docs versions current and default to TypeScript AppHosts - #1600
Conversation
There was a problem hiding this comment.
Pull request overview
Updates aspire.dev documentation and site behavior to keep Aspire version references current (including prerelease placeholders) and to make TypeScript the default first-time AppHost experience across language selectors (tabs, pivots, cards, and related UI).
Changes:
- Introduces
%ASPIRE_VERSION_PREVIEW%and expands auditing/tests to prevent stale or impossible prerelease version strings from persisting in current docs. - Makes TypeScript the first/default option for AppHost language selection via a central remark transform plus UI updates (pivots, integration cards, container API labels, shared code components), while preserving query-string and stored preferences.
- Updates contributor/agent guidance and adds/adjusts unit + e2e coverage for TypeScript-first behavior.
Reviewed changes
Copilot reviewed 36 out of 36 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| src/frontend/tests/unit/typescript-first-apphost-tabs.vitest.test.ts | Adds unit coverage for the remark transform that reorders aspire-lang tabs TypeScript-first. |
| src/frontend/tests/unit/custom-components.vitest.test.ts | Adds render assertions for TypeScript-first pivots and SimpleAppHostCode ordering. |
| src/frontend/tests/unit/aspire-version-placeholders.vitest.test.ts | Extends placeholder tests to include %ASPIRE_VERSION_PREVIEW% and scans current docs for version-shaped prerelease suffixes. |
| src/frontend/tests/e2e/pivot-selector.spec.ts | Updates Playwright coverage to assert TypeScript default and persistence behavior for AppHost tabs. |
| src/frontend/tests/e2e/integrations-gallery.spec.ts | Updates Playwright coverage to assert TypeScript-first integration gallery links and pivot defaults. |
| src/frontend/src/content/docs/reference/cli/commands/aspire-ps.mdx | Replaces hard-coded SDK output version with %ASPIRE_VERSION%. |
| src/frontend/src/content/docs/reference/cli/commands/aspire-new.mdx | Replaces hard-coded template version examples with %ASPIRE_VERSION%. |
| src/frontend/src/content/docs/reference/cli/commands/aspire-doctor.mdx | Replaces hard-coded prerelease suffix example with %ASPIRE_VERSION_PREVIEW%. |
| src/frontend/src/content/docs/reference/cli/commands/aspire-add.mdx | Replaces hard-coded add-version with %ASPIRE_VERSION%. |
| src/frontend/src/content/docs/integrations/devtools/browser-logs.mdx | Replaces hard-coded prerelease package version with %ASPIRE_VERSION_PREVIEW%. |
| src/frontend/src/content/docs/integrations/databases/efcore/migrations.mdx | Replaces fixed package version with %ASPIRE_VERSION%. |
| src/frontend/src/content/docs/integrations/custom-integrations/hosting-integrations.mdx | Replaces fixed versions with placeholders to keep examples current. |
| src/frontend/src/content/docs/integrations/cloud/azure/azure-data-explorer.mdx | Replaces hard-coded prerelease package version with %ASPIRE_VERSION_PREVIEW%. |
| src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-foundry/azure-ai-foundry-host.mdx | Replaces hard-coded prerelease package version with %ASPIRE_VERSION_PREVIEW%. |
| src/frontend/src/content/docs/get-started/aspire-sdk-templates.mdx | Replaces fixed template install example with %ASPIRE_VERSION%. |
| src/frontend/src/content/docs/community/contributor-guide.mdx | Updates contributor guidance and examples to author TypeScript-first AppHost tabs. |
| src/frontend/src/content/docs/app-host/eventing.mdx | Replaces fixed log “Aspire version” values with %ASPIRE_VERSION%. |
| src/frontend/src/components/starlight/Head.astro | Changes default aspire-lang preference to TypeScript and keeps preference persistence/query sync. |
| src/frontend/src/components/SimpleAppHostCode.astro | Switches shared AppHost example tabs to syncKey="aspire-lang" and TypeScript-first ordering. |
| src/frontend/src/components/PivotSelector.astro | Reorders options to render TypeScript first for key === 'aspire-lang'. |
| src/frontend/src/components/IntegrationCard.astro | Swaps language buttons so TypeScript docs links render first. |
| src/frontend/src/components/ContainerImages.astro | Adjusts language pivot defaulting and CSS rules to prefer TypeScript unless explicitly C#. |
| src/frontend/config/remark-typescript-first-apphost-tabs.mjs | Adds remark plugin to reorder AppHost language tabs TypeScript-first. |
| src/frontend/config/aspire-versions.mjs | Updates stable version and adds currentAspirePreviewVersion placeholder mapping. |
| src/frontend/config/aspire-version-placeholders-integration.mjs | Broadens comment to reflect multiple placeholders. |
| src/frontend/astro.config.mjs | Inserts the new remark plugin before version placeholder replacement. |
| .github/agents/release-verifier.agent.md | Updates release-verification guidance to scan for all version-shaped references and full prerelease suffixes. |
| .github/agents/community-toolkit-integration-doc-writer.agent.md | Updates guidance to author TypeScript-first AppHost tabs. |
| .agents/skills/whatsnew/SKILL.md | Notes currentAspirePreviewVersion as part of version constants. |
| .agents/skills/whatsnew/references/writing-guidelines.md | Updates parity guidance to TypeScript-first ordering. |
| .agents/skills/whatsnew/references/whats-new-template.mdx | Adds %ASPIRE_VERSION_PREVIEW% placeholder note and TypeScript-first parity guidance. |
| .agents/skills/whatsnew/references/05-polish.md | Updates quality gate to require TypeScript-first parity. |
| .agents/skills/whatsnew/references/03-critique.md | Updates critique checklist to require TypeScript-first parity. |
| .agents/skills/whatsnew/references/02-research.md | Updates research guidance to TypeScript-first parity. |
| .agents/skills/whatsnew/references/01-draft-scaffold.md | Updates scaffolding guidance to include stable + preview versions. |
| .agents/skills/doc-writer/SKILL.md | Updates documentation skill guidance to TypeScript-first AppHost parity patterns. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Frontend HTML artifact readyThe latest frontend build uploaded the This comment updates automatically when a new frontend build artifact is uploaded. |
Adam Ratzman (adamint)
left a comment
There was a problem hiding this comment.
The rendered pages are covered, but the copied Markdown and two new regression tests still have gaps.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
f658753 to
adc77b8
Compare
Mitch Denny (mitchdenny)
left a comment
There was a problem hiding this comment.
Documentation accuracy review
Phase A sources: microsoft/aspire@main 039a7c58f11a01521e49882e26d0d6593b87d9cf; microsoft/aspire@release/13.5 b5f143315ffb6968ea939a9978797a5b20e4c688; published NuGet package indexes. Claims: 22 verified, 0 verified-with-nuance, 0 unverifiable, 0 contradicted. Phase B: 12 affected routes exercised at PR SHA adc77b8787fc2c6c7c7db9e7e21dd2e1cc50bb28; 0 critical issues and 0 warnings.
Phase A — Claim verification
No contradicted or unverifiable claims found.
Verified claims and evidence
currentAspireMajorMinorVersionis13.5—microsoft/aspire@release/13.5,eng/Versions.props:4-7defines version prefix13.5.3.currentAspireVersionis13.5.3— same source, and NuGet publishesAspire.Hosting13.5.3.currentAspirePreviewVersionis13.5.3-preview.1.26425.3— NuGet publishes that exact version;src/apphost/Aspire.Dev.AppHost/Aspire.Dev.AppHost.csproj:14pins it.Aspire.AppHost.Sdk13.5.3 exists — verified in the NuGet package index and the site AppHost SDK pin atsrc/apphost/Aspire.Dev.AppHost/Aspire.Dev.AppHost.csproj:1.Aspire.Hosting13.5.3 exists — verified in the NuGet package index.Aspire.ProjectTemplates13.5.3 exists — verified in the NuGet package index.Aspire.Hosting.Kafka13.5.3 exists — verified in the NuGet package index.Aspire.Microsoft.EntityFrameworkCore.SqlServer13.5.3 exists — verified in the NuGet package index.Aspire.Hosting.Azure.Kusto13.5.3-preview.1.26425.3 exists — verified in the NuGet package index.Aspire.Hosting.Browsers13.5.3-preview.1.26425.3 exists — verified in the NuGet package index.Aspire.Hosting.Foundry13.5.3-preview.1.26425.3 exists — verified in the NuGet package index.apphost.mtsis the current TypeScript AppHost filename —microsoft/aspire@main,src/Aspire.Cli/Projects/DefaultLanguageDiscovery.cs:33-39.aspire-langtab groups synchronize TypeScript/C# selection page-wide —src/frontend/src/components/starlight/Head.astro:74-153and the passing pivot-selector e2e coverage.- Readers without a saved preference default to TypeScript —
src/frontend/src/components/starlight/Head.astro:158-174and the passing desktop/tablet/mobile e2e checks. - An explicit C# selection persists across reloads —
src/frontend/src/components/starlight/Head.astro:104-119andtests/e2e/pivot-selector.spec.ts. - The
aspire-langquery string takes precedence and synchronizes storage —src/frontend/src/components/starlight/Head.astro:95-119,158-174andtests/e2e/pivot-selector.spec.ts. PivotSelectorrenders TypeScript first only foraspire-lang—src/frontend/src/components/PivotSelector.astro:15-35andtests/unit/custom-components.vitest.test.ts.- Integration cards place TypeScript documentation links first —
src/frontend/src/components/IntegrationCard.astro:165-186andtests/e2e/integrations-gallery.spec.ts. - Container image API labels default to TypeScript while preserving explicit C# —
src/frontend/src/components/ContainerImages.astro:180-224,282-295. SimpleAppHostCodeuses canonical synchronized labels andapphost.mts—src/frontend/src/components/SimpleAppHostCode.astro:25-50andtests/unit/custom-components.vitest.test.ts.- Rendered MDX
aspire-langgroups are reordered TypeScript-first —src/frontend/config/remark-typescript-first-apphost-tabs.mjs:25-51; all 1,078 groups containing TypeScript were checked after transformation with none left C#-first. - Generated Markdown copies receive the same ordering and version replacement —
src/frontend/config/aspire-version-placeholders-integration.mjs:31-93and the focused unit coverage.
Phase B — Doc-tester results
Documentation Test Report
Focus Area: PR #1600 Phase B — version rendering, language tabs, code synchronization, and affected links
Date: 2026-09-02
Tester: doc-tester agent
PR: microsoft/aspire.dev#1600
SHA: adc77b8787fc2c6c7c7db9e7e21dd2e1cc50bb28
Local server: http://localhost:4321/
Browser session: phase-b-pr1600
Routes / Sections Exercised
/app-host/eventing/— eventing sections and four AppHost language groups./community/contributor-guide/— pnpm/npm installation tabs./get-started/aspire-sdk-templates/— available templates and versioned installation./integrations/cloud/azure/azure-ai-foundry/azure-ai-foundry-host/— installation and thirteen AppHost language groups./integrations/cloud/azure/azure-data-explorer/— installation and six AppHost language groups./integrations/custom-integrations/hosting-integrations/— custom resource guidance, AppHost and shell tabs./integrations/databases/efcore/migrations/— CLI/Package Manager and deployment-target tabs./integrations/devtools/browser-logs/— prerequisites and three AppHost language groups./reference/cli/commands/aspire-add/— name, examples, versions./reference/cli/commands/aspire-doctor/— name, output examples, versions./reference/cli/commands/aspire-new/— name, channel/version examples./reference/cli/commands/aspire-ps/— name, output examples.
Summary
| Category | Passed | Failed | Warnings |
|---|---|---|---|
| Content Accuracy | 12 | 0 | 0 |
| Code Examples | 5 | 0 | 0 |
| CLI Commands | 0 | 0 | 0 |
| Links | 17 | 0 | 0 |
Critical Issues
None observed.
Warnings
None observed.
Passed Checks
- All 12 routes returned HTTP 200 with expected titles and headings.
- No 404 presentation or browser-console errors occurred.
- No raw
%ASPIRE_VERSION%or%ASPIRE_VERSION_MAJOR_MINOR%placeholders remained in visible text or rendered DOM. - Current values rendered coherently, including
13.5.3,13.5, and applicable preview versions. - With clean browser storage, every affected AppHost tab group defaulted to TypeScript.
- Selecting C# synchronized related groups and displayed matching
AppHost.cs/C# examples. - Re-selecting TypeScript restored matching
apphost.mts/TypeScript examples. - Mouse and keyboard tab interaction worked.
- pnpm/npm, .NET CLI/Package Manager Console, and deployment-target tabs displayed their matching content.
- Five affected cross-page links were clicked successfully.
- One section anchor on every route was clicked successfully; all inspected same-page anchor targets existed.
Recommendations
- Priority fixes: None.
- Documentation gaps: None identified from the requested visible-behavior scope.
- Product issues: None observed.
Knowledge Gaps
None. No intrinsic Aspire knowledge was required to assess the requested rendering and interaction behavior.
Test Limitations
These are limitations, not observed failures:
- CLI commands and code samples were not executed or compiled because this Phase B run was explicitly scoped to visible behavior.
- Internal links outside the supplied affected-route list were not browsed.
- Source files, tests, diffs, and upstream repositories were not inspected.
Cleanup
The named browser session was closed, generated browser artifacts were removed, and only the started pnpm dev process was stopped. http://localhost:4321/ was confirmed no longer responsive.
stale
…1668) * Keep docs versions current and default to TypeScript AppHosts (#1600) * Keep docs versions current and default to TypeScript Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Address TypeScript-first review feedback Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: David Pine <7679720+IEvangelist@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * chore: Update integration data and GitHub stats (9/2/26) (#1612) Co-authored-by: aspire-repo-bot[bot] <aspire-repo-bot[bot]@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * chore: Update integration data and GitHub stats (9/3/26) (#1615) Co-authored-by: aspire-repo-bot[bot] <aspire-repo-bot[bot]@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * chore: Update integration data and GitHub stats (9/4/26) (#1622) Co-authored-by: aspire-repo-bot[bot] <aspire-repo-bot[bot]@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * chore: Update integration data and GitHub stats (9/7/26) (#1625) Co-authored-by: aspire-repo-bot[bot] <aspire-repo-bot[bot]@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * chore: Update integration data and GitHub stats (9/8/26) (#1629) Co-authored-by: aspire-repo-bot[bot] <aspire-repo-bot[bot]@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Merge Duplicate C#/.NET Sidebar Sections (#1632) * Fix: merge duplicate C#/.NET sidebar sections under Frameworks & runtimes * Clean:revert unrelated icon safelist regeneration * fix: match sidebar label to page title for .NET get-started item * Claude's accessibility fixes. (#1595) * Claude's accessibility fixes. * Addressed list margins feedback from @Copilot. * chore: Update integration data and GitHub stats (9/9/26) (#1640) * chore: Update integration data and GitHub stats (9/9/26) Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix: keep integration documentation mappings synchronized Remove the stale Bun mapping, reconcile catalog-managed mappings during updates, and stage documentation-map changes in automated PRs. Validate structured data without Astro-generated asset side effects. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: aspire-repo-bot[bot] <aspire-repo-bot[bot]@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Co-authored-by: David Pine <david.pine@microsoft.com> * docs: restore Floci integration documentation (#1590) * docs: restore Floci integration documentation Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * docs: address Floci review feedback Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: David Pine <7679720+IEvangelist@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * chore: Update integration data and GitHub stats (9/10/26) (#1647) Co-authored-by: aspire-repo-bot[bot] <aspire-repo-bot[bot]@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Improve search discoverability and agent-readable content (#1633) * feat: improve search and agent discoverability Restore page-specific descriptions, publish useful homepage Markdown, strengthen observability guidance, and defer inactive AppHost examples. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix: keep mobile homepage within layout budget Tighten spacing in the expanded observability section so the production mobile viewport remains within the existing compactness gate. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix: align agent docs and search indexing Document authenticated standalone MCP with an explicit API key and keep deferred AppHost examples out of the homepage Pagefind index. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: David Pine <7679720+IEvangelist@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Bump OpenTelemetry.Exporter.OpenTelemetryProtocol and 4 others (#1602) Bumps OpenTelemetry.Exporter.OpenTelemetryProtocol from 1.17.0 to 1.18.0 Bumps OpenTelemetry.Extensions.Hosting from 1.17.0 to 1.18.0 Bumps OpenTelemetry.Instrumentation.AspNetCore from 1.17.0 to 1.18.0 Bumps OpenTelemetry.Instrumentation.Http from 1.17.0 to 1.18.0 Bumps OpenTelemetry.Instrumentation.Runtime from 1.17.0 to 1.18.0 --- updated-dependencies: - dependency-name: OpenTelemetry.Exporter.OpenTelemetryProtocol dependency-version: 1.18.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget-selected - dependency-name: OpenTelemetry.Extensions.Hosting dependency-version: 1.18.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget-selected - dependency-name: OpenTelemetry.Instrumentation.AspNetCore dependency-version: 1.18.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget-selected - dependency-name: OpenTelemetry.Instrumentation.Http dependency-version: 1.18.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget-selected - dependency-name: OpenTelemetry.Instrumentation.Runtime dependency-version: 1.18.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget-selected ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump the github-actions group across 1 directory with 2 updates (#1601) Bumps the github-actions group with 2 updates in the / directory: [github/gh-aw-actions/setup](https://github.com/github/gh-aw-actions) and [github/gh-aw-actions/setup-cli](https://github.com/github/gh-aw-actions). Updates `github/gh-aw-actions/setup` from 0.87.1 to 0.88.0 - [Release notes](https://github.com/github/gh-aw-actions/releases) - [Changelog](https://github.com/github/gh-aw-actions/blob/main/CHANGELOG.md) - [Commits](github/gh-aw-actions@423b3dc...afc709f) Updates `github/gh-aw-actions/setup-cli` from 0.87.1 to 0.88.0 - [Release notes](https://github.com/github/gh-aw-actions/releases) - [Changelog](https://github.com/github/gh-aw-actions/blob/main/CHANGELOG.md) - [Commits](github/gh-aw-actions@423b3dc...afc709f) --- updated-dependencies: - dependency-name: github/gh-aw-actions/setup dependency-version: 0.87.5 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions - dependency-name: github/gh-aw-actions/setup-cli dependency-version: 0.87.5 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Hide the right TOC when the mobile TOC is visible (#1655) * Fix right TOC width at browser zoom levels Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Hide right TOC when mobile TOC is visible Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: David Pine <7679720+IEvangelist@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Docs: capture 13.2 Foundry rename breaking changes and remove legacy AIFoundry references (#1163) * docs: clarify Foundry migration guidance Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * docs: update Foundry package versions Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: b8ebe88c-337e-4d4a-aa80-e14c2c76289b --------- Co-authored-by: David Pine <7679720+IEvangelist@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Co-authored-by: Maddy Montaquila <maddy@MadBook-Pro-20.local> Copilot-Session: b8ebe88c-337e-4d4a-aa80-e14c2c76289b --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: David Pine <7679720+IEvangelist@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Co-authored-by: aspire-repo-bot[bot] <268009190+aspire-repo-bot[bot]@users.noreply.github.com> Co-authored-by: aspire-repo-bot[bot] <aspire-repo-bot[bot]@users.noreply.github.com> Co-authored-by: David Aniebo <aniebovictor001@gmail.com> Co-authored-by: Alistair Matthews <alistairwebdojo@live.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: Maddy Montaquila <maddy@MadBook-Pro-20.local> Copilot-Session: b8ebe88c-337e-4d4a-aa80-e14c2c76289b
* Keep docs versions current and default to TypeScript AppHosts (#1600) * Keep docs versions current and default to TypeScript Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Address TypeScript-first review feedback Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: David Pine <7679720+IEvangelist@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * chore: Update integration data and GitHub stats (9/2/26) (#1612) Co-authored-by: aspire-repo-bot[bot] <aspire-repo-bot[bot]@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * chore: Update integration data and GitHub stats (9/3/26) (#1615) Co-authored-by: aspire-repo-bot[bot] <aspire-repo-bot[bot]@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * chore: Update integration data and GitHub stats (9/4/26) (#1622) Co-authored-by: aspire-repo-bot[bot] <aspire-repo-bot[bot]@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * chore: Update integration data and GitHub stats (9/7/26) (#1625) Co-authored-by: aspire-repo-bot[bot] <aspire-repo-bot[bot]@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * chore: Update integration data and GitHub stats (9/8/26) (#1629) Co-authored-by: aspire-repo-bot[bot] <aspire-repo-bot[bot]@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Merge Duplicate C#/.NET Sidebar Sections (#1632) * Fix: merge duplicate C#/.NET sidebar sections under Frameworks & runtimes * Clean:revert unrelated icon safelist regeneration * fix: match sidebar label to page title for .NET get-started item * Claude's accessibility fixes. (#1595) * Claude's accessibility fixes. * Addressed list margins feedback from @Copilot. * chore: Update integration data and GitHub stats (9/9/26) (#1640) * chore: Update integration data and GitHub stats (9/9/26) Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix: keep integration documentation mappings synchronized Remove the stale Bun mapping, reconcile catalog-managed mappings during updates, and stage documentation-map changes in automated PRs. Validate structured data without Astro-generated asset side effects. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: aspire-repo-bot[bot] <aspire-repo-bot[bot]@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Co-authored-by: David Pine <david.pine@microsoft.com> * docs: restore Floci integration documentation (#1590) * docs: restore Floci integration documentation Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * docs: address Floci review feedback Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: David Pine <7679720+IEvangelist@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * chore: Update integration data and GitHub stats (9/10/26) (#1647) Co-authored-by: aspire-repo-bot[bot] <aspire-repo-bot[bot]@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Improve search discoverability and agent-readable content (#1633) * feat: improve search and agent discoverability Restore page-specific descriptions, publish useful homepage Markdown, strengthen observability guidance, and defer inactive AppHost examples. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix: keep mobile homepage within layout budget Tighten spacing in the expanded observability section so the production mobile viewport remains within the existing compactness gate. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix: align agent docs and search indexing Document authenticated standalone MCP with an explicit API key and keep deferred AppHost examples out of the homepage Pagefind index. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: David Pine <7679720+IEvangelist@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Bump OpenTelemetry.Exporter.OpenTelemetryProtocol and 4 others (#1602) Bumps OpenTelemetry.Exporter.OpenTelemetryProtocol from 1.17.0 to 1.18.0 Bumps OpenTelemetry.Extensions.Hosting from 1.17.0 to 1.18.0 Bumps OpenTelemetry.Instrumentation.AspNetCore from 1.17.0 to 1.18.0 Bumps OpenTelemetry.Instrumentation.Http from 1.17.0 to 1.18.0 Bumps OpenTelemetry.Instrumentation.Runtime from 1.17.0 to 1.18.0 --- updated-dependencies: - dependency-name: OpenTelemetry.Exporter.OpenTelemetryProtocol dependency-version: 1.18.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget-selected - dependency-name: OpenTelemetry.Extensions.Hosting dependency-version: 1.18.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget-selected - dependency-name: OpenTelemetry.Instrumentation.AspNetCore dependency-version: 1.18.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget-selected - dependency-name: OpenTelemetry.Instrumentation.Http dependency-version: 1.18.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget-selected - dependency-name: OpenTelemetry.Instrumentation.Runtime dependency-version: 1.18.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget-selected ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump the github-actions group across 1 directory with 2 updates (#1601) Bumps the github-actions group with 2 updates in the / directory: [github/gh-aw-actions/setup](https://github.com/github/gh-aw-actions) and [github/gh-aw-actions/setup-cli](https://github.com/github/gh-aw-actions). Updates `github/gh-aw-actions/setup` from 0.87.1 to 0.88.0 - [Release notes](https://github.com/github/gh-aw-actions/releases) - [Changelog](https://github.com/github/gh-aw-actions/blob/main/CHANGELOG.md) - [Commits](github/gh-aw-actions@423b3dc...afc709f) Updates `github/gh-aw-actions/setup-cli` from 0.87.1 to 0.88.0 - [Release notes](https://github.com/github/gh-aw-actions/releases) - [Changelog](https://github.com/github/gh-aw-actions/blob/main/CHANGELOG.md) - [Commits](github/gh-aw-actions@423b3dc...afc709f) --- updated-dependencies: - dependency-name: github/gh-aw-actions/setup dependency-version: 0.87.5 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions - dependency-name: github/gh-aw-actions/setup-cli dependency-version: 0.87.5 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Hide the right TOC when the mobile TOC is visible (#1655) * Fix right TOC width at browser zoom levels Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Hide right TOC when mobile TOC is visible Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: David Pine <7679720+IEvangelist@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Docs: capture 13.2 Foundry rename breaking changes and remove legacy AIFoundry references (#1163) * docs: clarify Foundry migration guidance Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * docs: update Foundry package versions Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: b8ebe88c-337e-4d4a-aa80-e14c2c76289b --------- Co-authored-by: David Pine <7679720+IEvangelist@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Co-authored-by: Maddy Montaquila <maddy@MadBook-Pro-20.local> Copilot-Session: b8ebe88c-337e-4d4a-aa80-e14c2c76289b * Update deployment docs to pipeline-step APIs and remove legacy callback annotation references (#1158) * Update deployment docs to pipeline-step API Refresh custom deployment examples for pipeline steps and clarify legacy callback references in deployment, diagnostics, and release notes. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 5b0c81a3-d822-462e-8cf5-8eb6debfe968 * Apply suggestions from code review Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Restore historical What's new content Keep release-version articles unchanged while retaining the current pipeline API updates elsewhere. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Address deployment docs review feedback Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: b156fe61-0b1c-460c-9735-1eaeaa356b0a * Align Aspire 9.4 deployment example with pipelines Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: b156fe61-0b1c-460c-9735-1eaeaa356b0a --------- Co-authored-by: David Pine <7679720+IEvangelist@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Co-authored-by: David Pine <david.pine@microsoft.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Maddy Montaquila <maddy@MadBook-Pro-20.local> Copilot-Session: 5b0c81a3-d822-462e-8cf5-8eb6debfe968 Copilot-Session: b156fe61-0b1c-460c-9735-1eaeaa356b0a * Live status header icon + redesigned videos page (#758) * Add live-status header icon, SSE backend, redesigned videos page - Adds a strobing live-status indicator in the site header (left of the cookie-preferences button) wired to a new /api/live SSE endpoint. - Adds a custom floating PiP player that follows visitors across the site while live and returns them to the videos page on close. - Replaces the legacy curated /community/videos/ page with a focused YouTube + Twitch tabbed page whose embed lights up when live. - Adds an in-StaticHost background-worker stack: * Twitch EventSub stream.online/offline subscription + reconcile, * YouTube WebSub subscribe/renew + confirming poll fallback, * a debounced LiveStatusBroadcaster with sticky primary-source mesh logic and Channel<T> SSE fan-out. - Surfaces the new endpoints + Scalar API reference (with a custom Aspire-brand theme) on the Aspire dashboard for local dev. - Includes a worktree cleanup helper script and PR_BODY.md. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add tests for live-status feature - StaticHost.Tests xUnit project: TwitchWebhookHandler (HMAC-SHA256 round-trip + tamper detection), YouTubeWebhookHandler (HMAC-SHA1 + Atom video-id extraction), LiveStatusBroadcaster (sticky-primary mesh, coalesce window via FakeTimeProvider, subscribe/unsubscribe). - vitest spec for live-status.ts public API. - Playwright spec mocking /api/live + a controllable SSE stream to drive the header icon strobe and the floating PiP open/close UX. 22 backend xUnit tests + 3 vitest assertions all green locally. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Unwrap draft PR body Remove hard-wrapped prose from the draft PR description so GitHub renders paragraphs and list items without arbitrary line breaks. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Remove draft PR body file Do not keep the temporary GitHub PR description file in source control. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Remove worktree cleanup scripts The cleanup helpers were workflow-only artifacts and should not be source controlled. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add local live-status dev controls - Enable an explicit AppHost local dev mode for live-status testing. - Add dashboard HTTP commands on the StaticHost resource to fake Twitch and YouTube live events, including signed calls to the real webhook endpoints. - Keep provider workers idle when API credentials are absent so local state only changes when commanded. - Fix the live-status JSON contract to emit youtube, matching the frontend client, and add coverage for that shape. - Document dashboard-command and manual HTTP testing paths. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Secure live dev commands and native PiP Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Keep live PiP open across navigation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Build frontend directly into StaticHost Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Keep live PiP alive across site navigation Enable Astro client routing so same-origin site links swap content without unloading the opener document that owns the native Document Picture-in-Picture window. Update the live-status e2e coverage to click a real internal Docs link and assert the PiP iframe remains intact. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Let users choose live PiP source When both Twitch and YouTube are live, show an explicit live-source menu from the header action before opening native Picture-in-Picture. Keep the selected source sticky while it remains live and allow switching an existing PiP window without recreating it. Also replace noisy iframe title attributes on the live embeds with aria-labels so the videos tabs keep an accessible frame name without hover title noise. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Polish live stream chooser Add YouTube and Twitch icons to the live-source chooser and remove the redundant aspiredotdev helper text. Rename the Community sidebar entry and related live destination copy from videos to Live Streams. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix live UX navigation regressions Preserve the cookie consent root across Astro client-side body swaps so preferences continue to open after navigation. Restyle the live source chooser to align with the existing install modal treatment and cover the cookie regression with Playwright. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add live stream action dialog Always show the live chooser while live so users can pick native PiP, the aspire.dev embeds, or the provider platform directly. Add a session-scoped dismiss action that silences the strobing live notification for the current live event without hiding the live entry point. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix live dialog mobile layout Keep the live action dialog within narrow viewports and add mobile E2E coverage using mocked live status APIs. Also keep generated StaticHost output out of Debug build item discovery so local AppHost starts remain fast. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Polish live dialog responsive behavior Make repeated live icon clicks toggle the live dialog, render the mobile dialog as a stable full-width sheet, restore a wider desktop menu with one-line labels, and harden mocked live-status E2E coverage for both layouts. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Move mobile live dialog below header Anchor the mobile live action dialog below the top navigation instead of using a bottom sheet, add a top-right dismiss button matching the Install CLI modal affordance, and update E2E coverage for placement and dismiss behavior. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Polish live actions and notification sessions Use regular Fluent icon names for local live command actions, reorganize the live action dialog into PiP, embedded-player, and platform groups, add external-link affordances, and introduce a stable liveSessionId so dismissing a live notification covers near-simultaneous provider joins. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix compact header regression expectation Account for the live status header action in the compact header reachability test and map it by tour target so the assertion remains stable when live-state labels change. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add StaticHost live unit coverage Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address live status PR feedback Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * * PR feedback * fixup * Fix API reference search controllers under view transitions The six API reference page templates initialized their search controllers inside a `DOMContentLoaded` listener. After this branch adds the `<ClientRouter />` to `Head.astro` (so the live PiP can persist across navigation), the site swaps bodies via view transitions and `DOMContentLoaded` does not refire on subsequent navigations. As a result, clicking the C#/TypeScript API buttons from the global search dialog landed on the API page with the URL `?q=` parameter in place but the controller was never instantiated, so `#ts-api-search-input` (and its C# counterpart) was never populated and search results were never rendered. Switch all six API reference page initializers to `astro:page-load`, which fires on the initial load and after every view-transition swap. This matches the convention already used by `Sidebar.astro`, `PageTitle.astro`, `InstallCliModal.astro`, and the rest of the post-ClientRouter components in this branch. Resolves: tests/e2e/site-search.spec.ts:200 'typed query is forwarded to the C# and TypeScript API buttons' (desktop / tablet / mobile chromium). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address PR review feedback for live-status Backend (StaticHost): - Broadcaster: seed+register subscribers atomically under the lock so a flush landing mid-subscribe can't strand a client on the stale seed; resolve sticky primary against the pending basis so the first source stays primary when a second joins within the coalesce window; ignore UpdatedAt when deciding whether anything substantive changed so an ever-advancing timestamp can't force a redundant broadcast. - Twitch webhook: reject stale/unparseable Message-Timestamp (10-min window, 1-min future skew) to bound replay of genuinely-signed callbacks; skip message-id dedup for verification handshakes so retried challenges always echo; inject TimeProvider. - YouTube webhook: replace the untracked per-notification Task.Run with a bounded, coalescing YouTubeLiveConfirmationQueue BackgroundService (capacity-1 DropWrite) tied to the host stopping token. - Reconcile loops: only swallow OperationCanceledException when the stopping token actually fired, so genuine cancellations elsewhere still surface. - Cache-Control: no-store now applied centrally to the whole /api/live group via an endpoint filter instead of per-handler. Frontend: - Seed fetch no longer clobbers fresher SSE state (apply only when not older). - Tabs: only trusted (real user) clicks make a tab sticky, so auto-switch keeps working; synthetic activateTab() clicks are ignored. - build-static-host: restore scalar/.gitignore in finally before the temp dir is removed, so a failed astro build can't lose the only preserved copies. - Dev proxy: AppHost injects StaticHost's origin (ASPIRE_STATICHOST_URL) and Vite proxies /api/live[/stream] to it under `aspire run`; omitted in CI/prod. - Playwright: fulfil the SSE route with a complete string body via a shared helper instead of a ReadableStream that serialised to garbage. Tests: - Broadcaster: coalesce-window primary stickiness and no-op suppression regressions. - TwitchWebhookHandler.IsFresh: fresh/stale/skew/unparseable. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Fix botched merge in Header.astro cookie consent The merge left Header.astro importing the removed `vanilla-cookieconsent` package, breaking the frontend build. upstream/main replaced that package with a global `[data-cookie-manage-consent]` handler in Head.astro (`siteConsent.manageConsent()`), so drop the stale import and script and keep only the live-status wiring. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Add seoTitle to videos page to satisfy SEO length guard The redesigned videos page composed an og:title of only 23 characters ("Aspire Live 📺 · Aspire"), below the 30-65 guard range enforced by tests/unit/seo-lengths.vitest.test.ts. Add a verbatim `seoTitle` override (55 chars, in the 50-60 optimal range) so the social-card title stays keyword-rich without lengthening the visible page title. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Remove obsolete cookie-preferences SPA-nav e2e test This PR-only test leaked into the merge without its `openCookiePreferences` helper, causing a ReferenceError across all e2e shards. The helper asserted the `#pm__title` vanilla-cookieconsent modal, but upstream/main removed that library in favor of a global `[data-cookie-manage-consent]` delegated listener (Head.astro) that survives client-side navigation by design. The new mechanism is already covered by cookie-consent.spec.ts, so drop the stale test. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Harden live status production readiness Back production stream settings with Azure Key Vault, make YouTube polling and WebSub quota-safe, and repair local proxy, client-navigation lifecycle, static asset, and autoplay behavior. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Ignore generated Aspire publish output Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Prefer provider handoff for mobile live streams Keep Document Picture-in-Picture on desktop while touch-first devices use provider apps or the existing iframe page. Improve chooser focus, failure feedback, touch targets, and iframe permissions. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Update live command tests for Aspire 13.5 Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Use read-only site secrets and reduce live-status overhead Provision a shared siteconfig vault without secret values, preserve read-only references, reuse SSE frames and timers, and avoid redundant player and navigation work. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Use parameters for live configuration Keep non-sensitive live-status settings as deployment parameters while retaining provider credentials and webhook signing keys as read-only Key Vault references. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Update ASP.NET Core OpenAPI package Use Microsoft.AspNetCore.OpenApi 10.0.12 so StaticHost resolves a current, non-vulnerable Microsoft.OpenApi dependency. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Isolate live status scaling Keep the public StaticHost on Aspire's normal per-site worker ceiling and proxy live-status traffic to a dedicated single-worker coordinator. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Use Redis for distributed live status Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Rename live cache variable Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Load live secrets from Key Vault configuration Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Address live status review feedback Use direct Redis optimistic concurrency for shared records, require distributed production services, clarify resource names and startup behavior, and share frontend brand tokens with Scalar. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Remove Redis key versions Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Address live status review feedback and coverage gaps Preserve consent and API search ownership across navigation, fence YouTube observations, make WebSub retries idempotent, and refresh rejected Twitch tokens. Add mapped HTTP, Redis, and accessibility coverage and run backend suites in CI. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Use Aspire to manage Redis integration test infrastructure Create the Redis-only application with DistributedApplicationTestingBuilder and the same Azure Managed Redis hosting integration as the AppHost. Remove the separate CI image pin, external connection-string contract, and shared-instance ownership guards. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Fix live embeds on staging and show YouTube uploads offline Resolve Twitch parent from the browser hostname before loading, correct the shared Aspire YouTube channel, and switch between the non-autoplaying uploads playlist and exact live video. Cover source transitions, hidden tabs, and client navigation. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Eric Erhardt <eric.erhardt@microsoft.com> Co-authored-by: David Pine <7679720+IEvangelist@users.noreply.github.com> * Make Dev Container guides language-neutral (#1667) * docs: recreate language-neutral dev container guides Recreates #1627, including the certificate trust clarification and refreshed template screenshots. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * docs: remove unnecessary SDK aside from container guides Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: David Pine <7679720+IEvangelist@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * [auto-sec] aspire.dev: remediate 12 frontend npm security alerts (#1645) Clears all open Dependabot alerts for src/frontend (1 critical, 6 high, 5 medium): - astro 7.1.3 -> 7.2.10 (critical GHSA + medium) - sharp 0.35.3 -> 0.35.4 (high) - vitest 4.1.10 -> 4.1.11; @vitest/mocker -> 4.1.11 (medium) - pnpm overrides: js-yaml 4.3.2, nanoid 3.3.18, svgo 4.1.0, fflate 0.7.5, smol-toml 1.7.1 Verified: pnpm install OK; pnpm audit -> no known vulnerabilities; astro sync OK. Co-authored-by: David Pine <7679720+IEvangelist@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix: restore site search after client-side navigation (#1675) * fix: restore site search after client-side navigation Initialize Pagefind per connected search element and dispose stale listeners and UI instances when navigating. Add navigation, history, API-page, and delayed-import regressions. Fixes #1673 Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix: preserve Mermaid layout across client navigation Keep Mermaid centering and responsive SVG sizing in the bundled stylesheet rather than relying on the plugin's one-time injected head style. Cover repeated navigation in light and dark themes on desktop and mobile. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix: keep two-slash hover popups paired across navigation Replace competing plugin and inline hover initializers with one site-owned runtime that pairs each token with its generated popup and initializes each new page idempotently. Preserve rendered hover styles and Expressive Code tools. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix: restore filters and history across client navigation Reinitialize API version, integration, and sample filters for each page and dispose outgoing listeners and debounce timers. Preserve Astro history state when filtering and avoid adding history entries during gallery initialization. Cover repeated navigation and Back on desktop and mobile. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * test: use the touch navigation fallback for site search Match the existing client-navigation suites by exercising native view transitions on desktop and ClientRouter's supported swap fallback on mobile and tablet. This prevents Chromium touch-emulation transition-abort exceptions from failing the strict search error assertions. Preserve all input, results, focus, history, and page-error checks. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Fix YouTube WebSub topic and back off subscription failures (#1674) Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Fix registry-specific tarball URLs in frontend lockfile Remove Microsoft mirror URL overrides while preserving pinned versions and integrity hashes so CI passes pnpm supply-chain checks. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Restore npm SHA-512 integrity hashes in frontend lockfile Refresh integrity metadata from the public npm registry while preserving all pinned dependency versions. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Remove duplicate Floci integration catalog entry Keep the Floci entry with 100 downloads and remove the earlier duplicate that caused resource catalog prerendering to fail. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: David Pine <david.pine@microsoft.com> Co-authored-by: David Pine <7679720+IEvangelist@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Co-authored-by: aspire-repo-bot[bot] <268009190+aspire-repo-bot[bot]@users.noreply.github.com> Co-authored-by: aspire-repo-bot[bot] <aspire-repo-bot[bot]@users.noreply.github.com> Co-authored-by: David Aniebo <aniebovictor001@gmail.com> Co-authored-by: Alistair Matthews <alistairwebdojo@live.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: Maddy Montaquila <maddy@MadBook-Pro-20.local> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Copilot-Session: b8ebe88c-337e-4d4a-aa80-e14c2c76289b Copilot-Session: 5b0c81a3-d822-462e-8cf5-8eb6debfe968 Copilot-Session: b156fe61-0b1c-460c-9735-1eaeaa356b0a
Why this is needed
Current guidance included hard-coded prerelease package versions such as
13.3.0-preview.1.26256.5. Aspire prerelease suffixes move independently from the stable version, so%ASPIRE_VERSION%cannot safely represent them and combining it with an older suffix can produce a package version that never existed. The release audit also searched only the immediately prior version, allowing older stale examples to survive multiple releases.AppHost language tabs were also authored C# first, which made C# the default for first-time readers even though TypeScript AppHosts are now the intended default documentation experience.
What changed
%ASPIRE_VERSION_PREVIEW%as a complete prerelease value and align stable and preview placeholders with the current site AppHost packagesaspire-langtab group TypeScript-first through a central remark transform, avoiding a fragile rewrite of more than 1,000 existing tab groupsapphost.mtsValidation
pnpm --dir ./src/frontend exec vitest run --config vitest.config.ts tests/unit/aspire-version-placeholders.vitest.test.tspnpm --dir ./src/frontend exec vitest run --config vitest.config.ts tests/unit/typescript-first-apphost-tabs.vitest.test.tsapphost.mtsgit diff --check